package com.lijin.study.java.ds;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

public class ListTest {

	@Test
	public void test() {
//		List<String> l1 = new ArrayList<String>();
//		l1.add("Test1");
//		l1.add("Test2");
//		l1.add("Test3");
//		l1.add("Test4");
//		
//		
//		List<String> l2 = new ArrayList<String>();
//		l2.add("Test1");
//		l2.add("Test2");
//		l2.add("Test3");
//		l2.add("Test4");
//		
//		List<String> l = new ArrayList<String>();
//		System.out.println(l.size());
//		l.addAll(l1);
//		System.out.println(l.size());
//		l.addAll(l2);
//		System.out.println(l.size());
		
		
		int c = 7;
		
		int[][] arr = new int[c][c];
		
		int x = 0;
		int y = 0;
		int dir = 0;
		for (int k = 1; k <= c * c; k ++) {
			arr[x][y] = k;
			                          
			switch (dir) {
				case 0 :
					if (y + 1 == c || arr[x][y + 1] != 0) {
						dir = 1;
					}
					break;
				case 1 :
					if (x + 1 == c || arr[x + 1][y] != 0) {
						dir = 2;
					}
					break;
				case 2 :
					if (y == 0 || arr[x][y - 1] != 0) {
						dir = 3;
					}
					break;
				case 3 :
					if (x == 0 || arr[x - 1][y] != 0) {
						dir = 0;
					}
					break;
				default :
					break;
			}
			
			switch (dir) {
				case 0 :
					y ++;
					break;
				case 1 :
					x ++;
					break;
				case 2 :
					y --;
					break;
				case 3 :
					x --;
					break;
				default :
					break;
			}
		}
		
		for (int i = 0; i < c; i ++) {
			System.out.println(Arrays.toString(arr[i]));
		}
	}
	
}
